Micron Document
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
| SparkN0de-git | SparkN0de |
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

Node / ReticulumProjects / MeshChatX.git / files / meshchatx / src / frontend / js / postInstallPromptState.js

Displaying Raw • Download


meshchatx/src/frontend/js/postInstallPromptState.js c0b0ddffd735a0d007c1be9a5e8563ec42fdafc0 (c0b0ddff) Text, 2.61 KB

T8b949e// SPDX-License-Identifier: 0BSD

T8b949e/**
* Persist which post-install / existing-user prompts have been dismissed.
* Each prompt has an id and a revision. Bump the revision in the registry
* to show that prompt again to users who already dismissed an older revision.
*/

Tff7b72export Tff7b72const Te6edf3POST_INSTALL_PROMPTS_STORAGE_KEY Tff7b72= Ta5d6ff"meshchatx.post_install_prompts_seen"Tb4b4b4;

T8b949e/**
* @returns {Record<string, number>}
*/
Tff7b72export Tff7b72function Te6edf3readSeenMapTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72typeof Tffa657window Tff7b72=== Ta5d6ff"undefined" Tff7b72|| Tff7b72!Tffa657windowTb4b4b4.Te6edf3localStorageTb4b4b4) Tb4b4b4{
Tff7b72return Tb4b4b4{Tb4b4b4}Tb4b4b4;
Tb4b4b4}
Tff7b72try Tb4b4b4{
Tff7b72const Te6edf3raw Tff7b72= Tffa657windowTb4b4b4.Te6edf3localStorageTb4b4b4.Te6edf3getItemTb4b4b4(Te6edf3POST_INSTALL_PROMPTS_STORAGE_KEYTb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3rawTb4b4b4) Tb4b4b4{
Tff7b72return Tb4b4b4{Tb4b4b4}Tb4b4b4;
Tb4b4b4}
Tff7b72const Te6edf3parsed Tff7b72= Tffa657JSONTb4b4b4.Te6edf3parseTb4b4b4(Te6edf3rawTb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3parsed Tff7b72|| Tff7b72typeof Te6edf3parsed Tff7b72!== Ta5d6ff"object" Tff7b72|| Tffa657ArrayTb4b4b4.Te6edf3isArrayTb4b4b4(Te6edf3parsedTb4b4b4)Tb4b4b4) Tb4b4b4{
Tff7b72return Tb4b4b4{Tb4b4b4}Tb4b4b4;
Tb4b4b4}
T8b949e/** @type {Record<string, number>} */
Tff7b72const Te6edf3out Tff7b72= Tb4b4b4{Tb4b4b4}Tb4b4b4;
Tff7b72for Tb4b4b4(Tff7b72const Tb4b4b4[Te6edf3idTb4b4b4, Te6edf3revisionTb4b4b4] Tff7b72of Tffa657ObjectTb4b4b4.Te6edf3entriesTb4b4b4(Te6edf3parsedTb4b4b4)Tb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3n Tff7b72= Tffa657NumberTb4b4b4(Te6edf3revisionTb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Tffa657NumberTb4b4b4.Tffa657isFiniteTb4b4b4(Te6edf3nTb4b4b4) Tff7b72&& Te6edf3n Tff7b72>= T79c0ff0Tb4b4b4) Tb4b4b4{
Te6edf3outTb4b4b4[Te6edf3idTb4b4b4] Tff7b72= Tffa657MathTb4b4b4.Te6edf3floorTb4b4b4(Te6edf3nTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}
Tff7b72return Te6edf3outTb4b4b4;
Tb4b4b4} Tff7b72catch Tb4b4b4{
Tff7b72return Tb4b4b4{Tb4b4b4}Tb4b4b4;
Tb4b4b4}
Tb4b4b4}

T8b949e/**
* @param {Record<string, number>} map
*/
Tff7b72export Tff7b72function Te6edf3writeSeenMapTb4b4b4(Te6edf3mapTb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72typeof Tffa657window Tff7b72=== Ta5d6ff"undefined" Tff7b72|| Tff7b72!Tffa657windowTb4b4b4.Te6edf3localStorageTb4b4b4) Tb4b4b4{
Tff7b72returnTb4b4b4;
Tb4b4b4}
Tffa657windowTb4b4b4.Te6edf3localStorageTb4b4b4.Te6edf3setItemTb4b4b4(Te6edf3POST_INSTALL_PROMPTS_STORAGE_KEYTb4b4b4, Tffa657JSONTb4b4b4.Te6edf3stringifyTb4b4b4(Te6edf3map Tff7b72|| Tb4b4b4{Tb4b4b4}Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tb4b4b4}

T8b949e/**
* @param {string} id
* @returns {number}
*/
Tff7b72export Tff7b72function Te6edf3getSeenRevisionTb4b4b4(Te6edf3idTb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3idTb4b4b4) Tb4b4b4{
Tff7b72return T79c0ff0Tb4b4b4;
Tb4b4b4}
Tff7b72const Te6edf3map Tff7b72= Te6edf3readSeenMapTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3n Tff7b72= Tffa657NumberTb4b4b4(Te6edf3mapTb4b4b4[Te6edf3idTb4b4b4]Tb4b4b4)Tb4b4b4;
Tff7b72return Tffa657NumberTb4b4b4.Tffa657isFiniteTb4b4b4(Te6edf3nTb4b4b4) Tff7b72&& Te6edf3n Tff7b72>= T79c0ff0 Tff7b72? Tffa657MathTb4b4b4.Te6edf3floorTb4b4b4(Te6edf3nTb4b4b4) Tff7b72: T79c0ff0Tb4b4b4;
Tb4b4b4}

T8b949e/**
* @param {string} id
* @param {number} revision
*/
Tff7b72export Tff7b72function Te6edf3markPromptSeenTb4b4b4(Te6edf3idTb4b4b4, Te6edf3revisionTb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3idTb4b4b4) Tb4b4b4{
Tff7b72returnTb4b4b4;
Tb4b4b4}
Tff7b72const Te6edf3nextRevision Tff7b72= Tffa657MathTb4b4b4.Te6edf3maxTb4b4b4(T79c0ff0Tb4b4b4, Tffa657MathTb4b4b4.Te6edf3floorTb4b4b4(Tffa657NumberTb4b4b4(Te6edf3revisionTb4b4b4) Tff7b72|| T79c0ff0Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3map Tff7b72= Te6edf3readSeenMapTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3prev Tff7b72= Te6edf3getSeenRevisionTb4b4b4(Te6edf3idTb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3nextRevision Tff7b72<= Te6edf3prevTb4b4b4) Tb4b4b4{
Tff7b72returnTb4b4b4;
Tb4b4b4}
Te6edf3mapTb4b4b4[Te6edf3idTb4b4b4] Tff7b72= Te6edf3nextRevisionTb4b4b4;
Te6edf3writeSeenMapTb4b4b4(Te6edf3mapTb4b4b4)Tb4b4b4;
Tb4b4b4}

T8b949e/**
* @param {string} id
* @param {number} revision
* @returns {boolean}
*/
Tff7b72export Tff7b72function Te6edf3shouldShowPromptTb4b4b4(Te6edf3idTb4b4b4, Te6edf3revisionTb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3target Tff7b72= Tffa657MathTb4b4b4.Te6edf3maxTb4b4b4(T79c0ff0Tb4b4b4, Tffa657MathTb4b4b4.Te6edf3floorTb4b4b4(Tffa657NumberTb4b4b4(Te6edf3revisionTb4b4b4) Tff7b72|| T79c0ff0Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3id Tff7b72|| Te6edf3target Tff7b72<= T79c0ff0Tb4b4b4) Tb4b4b4{
Tff7b72return Tff7b72falseTb4b4b4;
Tb4b4b4}
Tff7b72return Te6edf3getSeenRevisionTb4b4b4(Te6edf3idTb4b4b4) Tff7b72< Te6edf3targetTb4b4b4;
Tb4b4b4}

T8b949e/**
* Test helper.
*/
Tff7b72export Tff7b72function Te6edf3clearPromptSeenStateTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72typeof Tffa657window Tff7b72=== Ta5d6ff"undefined" Tff7b72|| Tff7b72!Tffa657windowTb4b4b4.Te6edf3localStorageTb4b4b4) Tb4b4b4{
Tff7b72returnTb4b4b4;
Tb4b4b4}
Tffa657windowTb4b4b4.Te6edf3localStorageTb4b4b4.Te6edf3removeItemTb4b4b4(Te6edf3POST_INSTALL_PROMPTS_STORAGE_KEYTb4b4b4)Tb4b4b4;
Tb4b4b4}


──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────